package com.lsc.www.day02;

public class OperatorTest04 {
    public static void main(String[] args) {
        /*
        *逻辑运算符
				&	逻辑与
				|	逻辑或
				！	逻辑非
				^	逻辑异或
*
				&& 	短路与
				|| 	短路或
* */
        int i = 20;
        int j = 10;
        //逻辑与（并且）
        System.out.println(i<j & ++i > j);//只有两边算子都为true时，结果才为true
        //逻辑与是只有两边全部执行完成才会输出结果，只要有一边错了结果就错了

        //逻辑或（或者）     //false | true
        System.out.println(i < j | j < i); //两边算子只要有一个是true，结果就是true

        //逻辑非 （取反） false时他为true，true时他为false （单目运算符）
        System.out.println(!true);
        System.out.println(!!true);

        //逻辑异或 两边的算子只要不一样他结果就为true
        System.out.println(true ^ false);
        System.out.println(true ^ true);

        // && 短路与 算子中之要有一个为false则结果为false
        int x = 10;
        int y = 5;
        //                flase   true
        System.out.println(x<y && y<x);

        //                 true    true   true     false   后面短路了不执行
        System.out.println(y<x  && y<x && true && false && true);

        // || 短路或 算子中只要有一个为true则后面的不执行
        // true    后面的短路了 不执行
        System.out.println(x>y || x<y);
        //                 false  false    false  false  true  后面的短路了 不执行
        System.out.println(x<y || false || x<y || x<y || true || false);
    }
}
